import { PdfTemplate } from '../components';
import { UnitUtil } from './UnitUtil';
export class PdfTemplateUtil {
  static to(template: PdfTemplate, pxPerUnit: number) {
    const newTemplate = { ...template };
    //转物理单位pt
    newTemplate.nodes = template.nodes.map((m) => {
      return {
        ...m,
        width: m.width / pxPerUnit,
        height: m.height / pxPerUnit,
        position: {
          x: m.position!.x! / pxPerUnit,
          y: m.position!.y! / pxPerUnit,
        },
      };
    });
    return newTemplate;
  }
  /**
   * 把模板内单位转为Pt(转Pdf时使用该方法，react-pdf的默认单位是pt)
   * @param template
   * @returns
   */
  static toPt(template: PdfTemplate) {
    return PdfTemplateUtil.to(template, template.unit.pxPerPt);
  }
  /**
   * 把模板内单位转为当前DPI的px(导入模板设计时使用该方法,上次设计的模板时的DPI和当前电脑不一致)
   * @param template
   * @returns
   */
  static toCurrentPx(template: PdfTemplate) {
    const pxPerCurrentPx = template.unit.pxPerMm / UnitUtil.getOneMmsPx();
    const newTemplate = PdfTemplateUtil.to(template, pxPerCurrentPx);
    newTemplate.unit = UnitUtil.getUnit();
    return newTemplate;
  }
}
